package com.rem.cloudalibaba.controller;

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 授权规则配置
 * 很多时候，我们需要根据调用来源来判断该次请求是否允许放行，这时候可以使用 Sentinel 的来源 访问控制的功能。来源访问控制根据资源的请求来源（origin）限制资源是否通过：
 * 若配置白名单，则只有请求来源位于白名单内时才可通过
 * 若配置黑名单，则请求来源位于黑名单时不通过，其余的请求通过
 *
 * @author Rem
 * @date 2021-08-04
 */

@RestController
public class SentinelAuthorityController {

    /**
     * 配置pc为黑名单
     * http://localhost:8002/authority/message?serviceName=pc
     * 当配置在注解的资源  /authority/resource 上会直接报错  com.alibaba.csp.sentinel.slots.block.authority.AuthorityException: null
     * 当配置在 /authority/message 接口上 会直接出现限流 Blocked by Sentinel (flow limiting)  内部实现对异常的兜底  两者都实现了功能
     *
     * @return
     */
    @GetMapping(value = "/authority/message")
    @SentinelResource("/authority/resource")
    public String authorityMessage() {
        return "授权规则配置";
    }


}
